//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef _CINEMATIC_MANAGER_H_
#define _CINEMATIC_MANAGER_H_

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ObjectLists/GameObjectList.h"

#define RUN_FINAL_CONFIGURATION_AS_LAST_ACTION	(0)

class Cinematic;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class CinematicManager
{
public:
	CinematicManager();
	~CinematicManager();

	/*void SaveData(CWriteFile* stream);
	void LoadData(CReadFile* stream);*/

	static CinematicManager* Instance() {return m_cineManager;};

	//void				AddCinematic(int cinematicID);
	void				AddCinematic(Cinematic* cinematic);
	void				RemoveCinematic(Cinematic* cinematic);
	void				Init();		
	bool				IsActive( Cinematic* cinematic );
	virtual void		update(float timeStep);

	bool				IsRunning();

	void				SkipCurrentCinematics();

	void				CancelCurrentCinematics();

public:
	static CinematicManager* m_cineManager;
	//int					m_cinematicToReplay;
	//int					m_oldCinematicToReplay; // no save

private:
	bool				m_mustSkipCinematics;
	GameObjectList		m_runningList;
	GameObjectList		m_readyToRunFinalAction;

#if RUN_FINAL_CONFIGURATION_AS_LAST_ACTION
	GameObjectList		m_justEndedList;
#endif

};

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#endif //CCinematicManager

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////